BugkuCTF–flag在index里(附加文件包含漏洞整理) 您所在的位置:网站首页 bugku ctf flag在index里 BugkuCTF–flag在index里(附加文件包含漏洞整理)

BugkuCTF–flag在index里(附加文件包含漏洞整理)

2024-01-13 05:24| 来源: 网络整理| 查看: 265

题目描述

在这里插入图片描述 在这里插入图片描述

解题思路

flag在index里面,查看一下源码,发现没有什么有用的东西。然后点击了click me 那个链接 只蹦出来一个test5 也是没有什么东西。 一度陷入僵局,后来查阅才知道,题目的解题点在url后缀的file里面。是ctf套路,典型的文件包含漏洞。

文件包含漏原理

文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。

php 中引发文件包含漏洞的通常是以下四个函数:

1、include() 当使用该函数包含文件时,只有代码执行到 include() 函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。

2、include_once() 功能和 include() 相同,区别在于当重复调用同一文件时,程序只调用一次。

3、require() 只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行

4、require_once() 它的功能与 require() 相同,区别在于当重复调用同一文件时,程序只调用一次。

当使用这四个函数包含一个新文件时,该文件将作为 PHP 代码执行,php 内核并不在意该被包含的文件是什么类型。所以如果被包含的是 txt 文件、图片文件、远程 url、也都将作为 PHP 代码执行。这一特性,在实施攻击时非常有用。

分类

文件包含漏洞可以分为RFI(远程文件包含漏洞)和LFI(本地文件包含漏洞)两种。而区分他们最简单的方法就是 php.ini 中是否开启了allow_url_include。如果开启 了我们就有可能包含远程文件。

1、本地文件包含 LFI(Local File Include)

2、远程文件包含 RFI(Remote File Include)(需要 php.ini 中 allow_url_include=on、allow_url_fopen = On)

在 php.ini 中,allow_url_fopen 默认一直是 On,而 allow_url_include 从 php5.2 之后就默认为 Off。

关于文件包含漏洞以及常见类型

接下来用到的是PHP的输入输出流协议, php://,官方文档;这个主要是用来让php读取自己的输入流和输出流 这里主要用了php://filter 在这里插入图片描述 文档中写了resource是必须的,我们可以在网站加载时,使用read选项,将需要的index文件读出来然后直接让他返回到页面中

因此构造payload

http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=index.php

这里为什么要采取base64-encode 是因为如果不将网页转换成base64编码,就会默认执行php代码。

so,得到base64加密的返回值 然后直接在线base64解密 得到php源码



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有